package cc.loac.heba.dao;

import cc.loac.heba.pojo.Hei;
import cc.loac.heba.pojo.HeiCollect;
import cc.loac.heba.pojo.HeiImage;
import cc.loac.heba.pojo.HeiLike;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface HeiDao {
    // 获取所有嘿文
    List<Hei> selectAllHei();

    // 根据嘿文 ID 获取嘿文
    Hei selectHeiById(String id);

    // 根据学校获取嘿文
    List<Hei> selectHeiBySchool(String schoolName);

    // 根据嘿文 ID 获取嘿文图片
    List<HeiImage> selectHeiImageByHeiId(int heiId);

    // 新增嘿文
    void insertHei(Hei hei);

    // 新增嘿文图片
    void insertHeiImage(List<HeiImage> heiImages);

    // 嘿文浏览数量 + 1
    void updateViews(int id);

    // 根据邮箱获取用户喜欢的文章
    List<HeiLike> selectHeiLikeByEmail(String email);

    // 根据邮箱获取用户收藏的文章
    List<HeiCollect> selectHeiCollectByEmail(String email);

    // 根据邮箱和嘿文 ID 添加 HeiLike
    void insertHeiLike(String email, int heiId);

    // 根据邮箱和嘿文 ID 添加 HeiCollect
    void insertHeiCollect(String email, int heiId);

    // 嘿文的收藏数量 - 1
    void updateCollectionsMinus(int id);

    // 根据邮箱和嘿文 ID 删除 HeiLike
    void deleteHeiLike(String email, int heiId);

    // 根据邮箱和嘿文 ID 删除 HeiCollect
    void deleteHeiCollect(String email, int heiId);

    // 根据嘿文 ID 数组获取嘿文
    List<Hei> selectHeiByIds(List<Integer> heiIds);

    // 根据邮箱获取嘿文
    List<Hei> selectHeiByEmail(String email);

    // 根据邮箱获取嘿文数量
    int selectHeiCountByEmail(String email);

    // 根据嘿文 ID 删除嘿文
    void deleteHeiByHeiId(String heiId);

    // 根据嘿文图片 ID 数组删除嘿文图片
    void deleteHeiImageByIds(List<Integer> heiImageIds);

    // 根据嘿文 ID 删除喜欢该嘿文的数据
    void deleteHeiLikeByHeiId(Integer heiId);

    // 根据嘿文 ID 删除收藏该嘿文的数据
    void deleteHeiCollectByHeiId(Integer heiId);

    // 根据嘿文图片 ID 获取嘿文图片
    HeiImage getHeiImageByImageId(String heiImageId);

    // 更新嘿文
    void updateHei(Hei hei);

    // 根据嘿文 ID 获取嘿文评论数量
    int selectHeiCommentCountByHeiId(int heiId);

    // 更新嘿文评论数量
    void updateHeiComments(int heiId, int count);

    // 更新用户喜欢嘿文数量
    void updateUserLikeCount(String email, int count);

    // 获取用户喜欢的嘿文数量
    int selectUserLikeCountByEmail(String email);

    // 更新嘿文喜欢数量
    void updateHeiLikeCount(int heiId, int count);

    // 获取嘿文喜欢数量
    int selectHeiLikeCountByHeiId(int heiId);

    // 更新用户收藏数量
    void updateUserCollectCount(String email, int count);

    // 获取用户收藏数量
    int selectUserCollectCountByEmail(String email);

    // 更新嘿文收藏数量
    void updateHeiCollectCount(int heiId, int count);

    // 获取嘿文收藏数量
    int selectHeiCollectCountByHeiId(int heiId);
}
